package Demo;

import java.util.Arrays;

public class Demo05 {
    public static void main(String[] args) {
        /**
         * 数组选择排序：每次从这堆“参与比较的数据当中”找出最小值，拿着这个最小值和
         * 			“参与比较的这堆最前面的元素”交换位置。
         * 选择排序比冒泡排序的效率高，比较的轮次少。
         */

        int[] arr ={3,1,6,2,5};
        //选择排序
        //长度是5 循环4次 （外循环4次 ）
        for (int i = 0; i < arr.length - 1; i++) {
            //i的值 正好是“参加比较的这堆数据中”最左元素的下标。
            //假设起点i的小标位置上元素是最小的
            int min = i;
            //j的起点是 i + 1  因为需要跟后面的元素比较
            for (int j = i + 1; j < arr.length; j++) {

                if(arr[j] < arr[min]){
                    min = j; //如果结果为true 将下标j赋值min
                }


            }
            //当min和i相等，表示猜测是对的 下标i的元素是最小值
            //当min和i不相等，表示猜测是错的 下标i的元素bu是最小值
            //需要拿这个更小的元素和最左边元素交换
            //if判断在外层for中 不在内存for中
            if(min != i){
                int temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }


        }


        System.out.println(Arrays.toString(arr));


    }
}
